JS可以在浏览器中运行,也可以在Node中运行
JS是客户端语言,也是服务器端的语言
node基础
Node是什么?
node是供js代码执行的环境。等价于浏览器,只不过一般把node安装到服务器端(为了服务端可以使用js)
NODE && 浏览器
- [x] 兼容:
- [ ] node采用谷歌引擎用来解析渲染JS代码(不存在兼容问题)
- [ ] 浏览器引擎不同,存在兼容问题
- [x] 全局js对象:
- [ ] node环境下的全局js对象是Global
- [ ] 浏览器中全局js对象是window
- [x] 进行文件操作 :
- [ ] NODE环境提供对应I/O操作(服务器上文件的增删改查操作)
- [ ] 浏览器安装在客户端,为了保护客户端安全,不提供js对客户电脑的文件进行操作的功能
- [x] node提供给js很多新的方法
(http.createServer、fs.writeFileSync、) - [x] node基于事件驱动/异步操作的
如何让js在node中执行
- [x] 在命令窗口执行 ( 相当于js代码在node环境中执行 )
- [ ] 找到文件目录,
shift+右键
—> 打开命令窗口,输入node **.js
- [ ] 在命令窗口中执行
node
,相当于浏览器控制台用来测试js代码
- [ ] 找到文件目录,
- [x] webStorm嵌入node,直接右键(存在缓存问题)
服务创建成功,客户如何给服务端发送请求?
- [ ] 浏览器中输入
http://localhost:端口号
- [ ] 浏览器中输入
http://本机IP:端口号
(联网)- 查看本机IP:
ipconfig
- 查看本机IP:
node模块
(模块:提供方法,供js在node环境中使用)
[x] 内置模块:(node天生提供的)
- [ ] http(创建和操作服务的)–>createServer
- [ ] fs(文件I/O操作)–>writeFileSync
- [ ] url(解析客户端的请求)
- [ ] ……
[x] 自定义模块:自己写的js模块
在NODE环境中,创建一个JS都相当于创建了一个模块–>例如:新建a.js,b.js(互不影响)- b调用a的方法
- [ ] a模块方法被调用,需要通过
module.exports
方法导出 [ ] b模块使用a模块方法,需要导入a模块
var a=require("./a");
123456789101112131415//a模块function fn(){console.log("a")}module.exports={aaafn:fn}//b模块function fn(){console.log("b")}var a=require("./a");//导入a模块a.aaafn();//需要a导出到这里
[x] 第三方模块:别人写的模块我们来使用
需要使用npm这个命令进行管理。npm属于NODE管理第三方模块的操作命令
https://www.npmjs.com/模块安装:
npm install
,我们的每一个项目都可以使用这个模块了模块卸载:
npm uninstall
例如 : 安装导入less模块(存在问题)
- 命令窗口执行
npm install less
(执行在当前文件下会出现一个node_modules文件夹) 创建一个1.less文件
1234567891011121314@color:#fff;.transition(@property:all,@duration:1s,@fn:linear,@delay:0s){-webkit-transition:@arguments;-moz-transition:@arguments;}.box{background:@color;.transiton(@duration:0.5s);}.box1{background:@color;.transiton(@duration:0.2s);}导入less模块:
var less = require("less")
;使用less.render…等方法12345var less = require("less");var fs = require("fs");less.render(fs.readFileSync("./1.less", "utf-8"), { compress:true }, function(error, output) {fs.writeFileSync("./1.css", output.css, "utf-8");//有错});
- 命令窗口执行
node模块内置方法
[x] 三个常用node内置模块
123var http = require("http"),url = require("url"),//-->url.parse()用来解析url地址的fs = require("fs");[ ] HTTP
- http.createServer();–>创建一个服务(服务员)
- server1.listen(80);–>为服务监听一个端口80(胸牌号)1234567891011121314var http = require("http"), //->创建服务或者管理服务//当客户端向当前服务(80)发送请求才会执行的,服务成功接收这个请求)var server1 = http.createServer(function(request, response) {console.log("haha");// request(请求):存放所有客户的请求信息,包含客户端通过问好传参的方式传给服务器的数据内容// response(响应):提供了向客户端返回内容和数据的方法});//当端口监听成功后会触发回调函数执行server1.listen(80, function() {console.log("server is success,listening on 80 port!");});
[ ] url
|
|
- [ ] fs
- 不管是读取还是写入,内容都是一个字符串。
|
|
- 三个模块
|
|